require('./WithList.styl');
const DB = require('app/db');
const WithList = (WrappedComponent, getData) => {
    class WithList extends React.Component {
        static defaultProps = {
            PageNum: 0,
            CountForAPage: 10
        };
        constructor(props) {
            super(props);
            this.state = {
                data: [],//传给组件的数据
            };
        }

        render() {
            // ……使用最新的数据渲染组件
            // 注意此处将已有的props属性传递给原组件
            //   const { type } = this.props;
            //   // 向包裹组件注入props属性，一般都是高阶组件的state状态
            //   // 或实例方法
            //   const injectedProp = someStateOrInstanceMethod;
            //   // 向包裹组件传递props属性
            //   return (
            //     <WrappedComponent
            //       injectedProp={injectedProp}
            //       {...passThroughProps}
            //     />
            //   );
            return (
                <WrappedComponent
                    {...this.state}
                    {...this.props}
                />);
        }
        componentWillUnmount() {

        }
        componentDidMount() {
            this.getNetData();
        }
        getNetData(params=undefined){
            let success = (data) => {
                this.setState({
                    data: data
                });
            };
            let error = () => {
                this.setState({
                    hasError: true,
                });
            };
            getData(DB, this.props, success, error, params);          
        }
    };
    WithList.displayName = `WithList(${getDisplayName(WrappedComponent)})`;
    return WithList
}
const getDisplayName = (WrappedComponent) => WrappedComponent.displayName || WrappedComponent.name || 'Component';

module.exports = WithList;
